<?php
class Image{
    /*图片基本信息*/ 
    private $info;
    /*内存中的图片*/ 
    private $image;
    /*打开图片,读取到内存中(构造方法,自动执行)*/ 
    public function __construct($src)
    {
        $info = getimagesize($src);
        $this->info = array(
            'width' =>$info[0],
            'height' =>$info[1],
            'type' => image_type_to_extension($info[2],false),
            'mime' => $info['mime']
        );
       $fun = "imagecreatefrom{$this->info['type']}";
       $this->image = $fun($src);
    }

    /*操作图片(压缩)*/ 
    public function thumb($width,$height)
    {
        $image_thumb = imagecreatetruecolor($width,$height);
        imagecopyresampled($image_thumb,$this->image,0,0,0,0,$width,$height,$this->info['width'],$this->info['height']);
        imagedestroy($this->image);
        $this->image = $image_thumb;
    }

    /*操作图片(添加字体水印)*/
    public function fontMake($content,$font_url,$size,$color,$local,$angle)
    {
        $col = imagecolorallocatealpha($this->image,$color[0],$color[1],$color[2],$color[3]);
        imagettftext($this->image,$size,$angle,$local['x'],$local['y'],$col,$font_url,$content);
    } 

    /*操作图片(添加图片水印)*/ 
    public function imageMake($source,$local,$alpha)
    {
        $info2 = getimagesize($source);
        $type2 = image_type_to_extension($info2[2],false);
        $fun2 = "imagecreatefrom{$type2}";
        $water = $fun2($source);
        imagecopymerge($this->image,$water,$local['x'],$local['y'],0,0,$info2[0],$info2[1],$alpha);
        imagedestroy($water);
    }
    /*浏览器中输出图片*/ 
    public function show()
    {
        header("Content-type:".$this->info['mime']);
        $funs = "image{$this->info['type']}"; //imagejepg/png
        $funs($this->image);
    }

    /*把图片保存到硬盘*/ 
    public function save($newname)
    {
        $funs = "image{$this->imfo['type']}";
        $funs($this->image,$newname.'.'.$this->info['type']);
    }
    /*销毁图片*/ 
    public function __destruct()
    {
        imagedestroy($this->image);
    }
}
                      /*
   o                 /' ) 
                   /'   (                          ,
               __/'     )                        .' `;
o      _.-~~~~'          ``---..__             .'   ;
 _.--'  b)                       ``--...____.'   .'
(     _.      )).      `-._                     <
 `\|\|\|\|)-.....___.-     `-.         __...--'-.'.
   `---......____...---`.___.'----... .'         `.;
                                    `-`           `*/ 